package com.lixl.concurrent.thread;

public class ThreadWaitingDemo {

	public static void main(String[] args) {
		
		/**
		 * 两个司机每人一辆车，准备出门旅游
		 */
		Car c1 = new Car("1001", "张三");
		Car c2 = new Car("1002", "李四");
		//还在家门口，没有出发，所以线程状态都是NEW
		System.out.println("出发时间："+c1.getRunTime()+"\t"+c2.getRunTime() +
				"\t"+c1.getState()+"\t"+c2.getState());
		
		c1.start();c2.start();//打火、出发，此时都为RUNNABLE
		System.out.println("出发时间："+c1.getRunTime()+"\t"+c2.getRunTime() +
				"\t"+c1.getState()+"\t"+c2.getState());
		
		
		/**
		 * 每1s跟踪一下两人的状态，直到两人都到达终点
		 */
		while(true){
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println("出发时间："+c1.getRunTime()+"\t"+c2.getRunTime() +
					"\t"+c1.getState()+"\t"+c2.getState()+"\t"+c1.getMeterClock()+"\t"+c2.getMeterClock());
			
			if("WAITING".equals(c1.getState().name())){
				Police.syncNotify(Police.getLock());
			}
			
			if(c1.isAlive()==false && c2.isAlive()==false){
				break;
			}
		}

	}

}
